package com.divemotor.ventarepuestosinternet.servlet;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.HttpRequestHandler;

import com.divemotor.ventarepuestosinternet.util.Constantes;
import com.divemotor.ventarepuestosinternet.util.FileUtil;

@Component("pdfServlet")
public class PdfServlet implements HttpRequestHandler {
	
	private static final Logger logger = Logger.getLogger(PdfServlet.class);
	@Autowired
	private String imgRuta;
	
	private String retornarPath(String nombreArchivo){
		String path = Constantes.NOMBRE_ARCHIVO_NO_IMAGEN;
		
		if(StringUtils.isNotEmpty(nombreArchivo)){
			path = FileUtil.retornarPath(imgRuta, nombreArchivo);
		}
		
		return path; 
	}
	
	@Override
	public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String nombreArchivo = request.getParameter("nombreArchivo");
		
		try {
			logger.info("ruta del archivo " + nombreArchivo);
			
			String path = retornarPath(nombreArchivo);
			
			if(!path.equals(Constantes.NOMBRE_ARCHIVO_NO_IMAGEN)){
				BufferedInputStream in = new BufferedInputStream(new FileInputStream(new File(path)));
				
				byte[] bytes = new byte[in.available()];
				
				in.read(bytes);
				in.close();
				
				response.getOutputStream().write(bytes);
			}  
		}catch(FileNotFoundException fn){
			logger.error("EX* processRequest FileNotFoundException: " + fn.getMessage());
		}catch (Exception e) {
			logger.error("EX* processRequest Exception: " + e.getMessage());
		}
	}
}